package com.yc.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yc.model.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface ProductMapper extends BaseMapper<Product> {

//    /**
//     * 分页查询商品列表，支持根据商品名称、分类ID、商品状态进行筛选，
//     * 并可按指定字段排序
//     *
//     * @param page          分页参数
//     * @param productName   商品名称（模糊匹配），可选
//     * @param categoryId    分类ID，可选
//     * @param productStatus 商品状态，0-下架，1-上架，可选
//     * @param sortBy        排序字段，如 price、productId，可选
//     * @param order         排序方式，asc 或 desc，可选
//     * @return              返回分页后的商品列表
//     */
//    Page<Product> selectProductPage(Page<Product> page,
//                                    @Param("productName") String productName,
//                                    @Param("categoryId") Integer categoryId,
//                                    @Param("productStatus") Integer productStatus,
//                                    @Param("sortBy") String sortBy,
//                                    @Param("order") String order);

    @Select("SELECT * FROM product WHERE productId = #{id}")
    Product findById(@Param("id") Long id);

    /**
     * 根据商品ID更新商品状态（上下架）
     *
     * @param product 商品实体，必须包含 productId 和 productStatus
     * @return        受影响的行数，>0表示成功
     */
    @Update("UPDATE product SET productStatus = #{productStatus} WHERE productId = #{productId}")
    int updateStatusById(Product product);

    /**
     * 根据商品ID更新商品详细信息
     *
     * @param product 商品实体，必须包含 productId 和需要更新的字段
     * @return        受影响的行数，>0表示成功
     */
    @Update("UPDATE product SET " +
            "product_name = #{productName}, " +
            "category_id = #{categoryId}, " +
            "product_price = #{productPrice}, " +
            "product_stock = #{productStock}, " +
            "product_description = #{productDescription}, " +
            "product_status = #{productStatus} " +
            "WHERE product_id = #{productId}")
    int updateProductById(Product product);
}




